﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Website.Logger;
using DAL;
using UtilityExtensions;
using BOL.RendicionVentas;
using BOL;
using WebLib;
using BOL.Cliente;
using System.Web.Script.Services;
using System.Web.Services;
using BOL.Ventas;

namespace UILGestion.VentaAdmin.DocumentoVenta
{
    public partial class DocumentoVentaOPTEditForm : System.Web.UI.Page
    {


        [WebMethod(), ScriptMethod()]
        public static string GetOrdenVentaItem(String prefixText, String contextKey)
        {

            //ClienteSearchInfo nuevo = new ClienteSearchInfo();
            //nuevo.descripcion = "<strong><span  style='color: #FFFF00;background-color: #800000;'>Registrar nuevo Cliente</span></strong>";
            //nuevo.idInternal = 0;


            var p = (from a in DbUtil.Db.OrdenVentaItems
                     where (a.OrdenVenta.Cliente.descripcion).Contains(prefixText)
                     & a.OrdenVenta.idProyecto == contextKey.ToInt()
                     select new OrdenVentaItemSearchInfo
                     {
                         idInternal = a.idInternal,
                         etapa = a.UI.Etapa.descripcion,
                         localizacion = string.Format("{0} {1}", a.UI.UILocalizacion.descripcion, a.UI.UIBloque.descripcion),
                         UI = a.UI.descripcion,
                         descripcion = a.OrdenVenta.Cliente.descripcion,
                         vista = string.Format("{0}:{1} {2} {3}", a.OrdenVenta.Cliente.TipoDocumento.abreviacion, a.OrdenVenta.Cliente.numDocumento, a.OrdenVenta.Cliente.descripcion, a.UI.descripcion),
                     }).Take(35);


            return Util.Tbl2Str(Util.EntidadToDataTable(p.ToList()));

        }


        protected void Page_Load(object sender, EventArgs e)
        {
            
            clienteTXT.ChkVal = (string)Request.QueryString["idProyecto"]; 
            if (!Page.IsPostBack)
            {
                try
                {
                   
                    idProyecto.Value = (string)Request.QueryString["idProyecto"];
                    idOrdenVenta.Value = (string)Request.QueryString["idOrdenVenta"];
                    
                    menuCtrl1.loadMenuVenta(idProyecto.Value.ToInt());
                    FormatForm();

                }
                catch (SqlException sqlex)
                {
                    WebServerSideSqlError.Log(sqlex);

                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


                }
                catch (Exception ex)
                {
                    WebServerSideError.Log(ex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

                }

            }
        }
        private void ShowComboBox()
        {
            var lista = new ListValueBL();
            //conceptoDDL.DataValueField="idInternal";
            //conceptoDDL.DataTextField="descripcion";
            //conceptoDDL.DataSource = lista.GetConceptoVenta();
            //conceptoDDL.DataBind();

            monedaDDL.DataValueField = "idInternal";
            monedaDDL.DataTextField = "descripcion";
            monedaDDL.DataSource = lista.GetMoneda();
            monedaDDL.DataBind();
        }

        private void LoadCliente(Cliente cliente)
        {
            cliente1TXT.Text = cliente.descripcion;
            clienteTXT.Text = cliente.descripcion;
           
        }
        private void FormatForm()
        {
            ShowComboBox();
            if (idOrdenVenta.Value.ToInt() > 0)
            {
                var ordenventa = DbUtil.Db.OrdenVentas.Single(p => p.idInternal == idOrdenVenta.Value.ToInt());
                LoadCliente(ordenventa.Cliente);
                
                var ordenVentaItem= (from a in DbUtil.Db.OrdenVentaItems
                                    where a.idOrdenVenta==ordenventa.idInternal
                                    select  new {
                                        idInternal = a.idInternal,
                                         etapa = a.UI.Etapa.descripcion,
                                         localizacion = string.Format("{0} {1}", a.UI.UILocalizacion.descripcion, a.UI.UIBloque.descripcion),
                                         UI = a.UI.descripcion,
                                         descripcion = a.OrdenVenta.Cliente.descripcion,
                                         
                                    }).First();


                etapaTXT.Text = ordenVentaItem.etapa;
                localizacionTXT.Text = ordenVentaItem.localizacion;
                
                UIDDL.DataValueField = "idInternal";
                UIDDL.DataTextField = "descripcion";

                var q = from a in DbUtil.Db.OrdenVentaItems
                        where a.idOrdenVenta == idOrdenVenta.Value.ToInt()
                        select new
                        {
                            idInternal = a.idInternal,
                            descripcion = a.UI.descripcion
                        };

                UIDDL.DataSource = q;
                UIDDL.DataBind();
                
     
                
             
            }
            //PendienteFactConceptoPanel1.DataBind();
            PendientePagoPanelODS.DataBind();
        }

        protected void siguienteLKB_Click(object sender, EventArgs e)
        {
            var lista = PendienteFactConceptoPanel1.SeleccionList;

            if (lista.Count > 0)
            {
                string idColeccion = Parametros.GenerarID().ToString();

                Session[idColeccion] = lista;
                Response.Redirect("DocumentoVentaEditForm.aspx?Type=A&idProyecto={0}&idColeccion={1}".Fmt(idProyecto.Value, idColeccion), true);
            }
        }

        //protected void UIDDL_SelectedIndexChanged(object sender, EventArgs e)
        //{
        //    try
        //    {

        //                    PendientePagoPanelODS.DataBind();
        //    }
        //    catch (Exception)
        //    {
                
        //        throw;
        //    }
        //}

    }
}